<?php
//TODO ASIGNADO ALE: acomodar para que aparezca en ingreso diario al contado (cuando hay pagares) solo los pagares cobrados en el dia 
class class_CajaIngresoDiario
{
	private $_db; 
	function __construct()
	{
		$this->config();
	}
	private function config()
	{
		require_once("conexion.php");
		require_once("DataBase.php");
		$this->_db = new DataBase($SERVIDOR,$USUARIO,$PASSWORD,$BASE);
		mysql_query("SET NAMES utf8");
	}
	
	
	
	function method_getMedicos($params, $error)
    {
        if (count($params) != 0) { $error->SetError(JsonRpcError_ParameterMismatch, "Expected 0 parameter; got " . count($params)); return $error; }
        
        $this->_db->setQuery("SELECT dni_usuario as value, usuario as label FROM usuarios WHERE cod_tipo_usuario = '3'");
    	$this->_db->alter();
    	if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
        
		return $this->_db->loadResult();
    }
    function method_getCajaIngresoDiario($params, $error)
    {
    	if (count($params) != 1) { $error->SetError(JsonRpcError_ParameterMismatch, "Expected 1 parameter; got " . count($params)); return $error; }
		
    	$result = array();
    	$medico = "";
    	$INNER_ATENDIDOS = "";
    	$dia = "";
    	$SQL = "";
    	
    	IF ($params[0]->medico != "0")
    	{
    		$medico = " AND turnos.dni_usuario = '" . $params[0]->medico . "' ";
    	}
    	IF ($params[0]->dia != "")
    	{
    		$params[0]->dia = owFunciones::DateToSQL($params[0]->dia);
    		$INNER_ATENDIDOS = " INNER JOIN pacientes_atendidos ON turnos.cod_turno = pacientes_atendidos.cod_turno ";
    		$dia = " AND pacientes_atendidos.fecha = '" . $params[0]->dia . "' ";
    	}
    	
    	SWITCH ($params[0]->tipo_ingreso)
    	{
    		CASE 'TODOS':
    		{
    			$this->_db->setQuery("SELECT tabla, descripcion FROM obras_sociales");
		    	$this->_db->alter();
		    	if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
		    	$tablas = $this->_db->loadResult();
		    	
		    	FOREACH ($tablas as $tabla)
		    	{
		    		if ($SQL == "")
		    		{
		    			$SQL = "(SELECT usuario as medico, planes.descripcion as forma_pago, prestaciones.pm, prestaciones.descripcion as prestacion, os_" . $tabla->tabla . ".plus as importe, 'P' as tipo FROM os_" . $tabla->tabla . " INNER JOIN nomenclador ON os_" . $tabla->tabla . ".cod_nomenclador = nomenclador.cod_nomenclador INNER JOIN prestaciones ON nomenclador.cod_prestacion = prestaciones.cod_prestacion INNER JOIN turnos ON os_" . $tabla->tabla . ".cod_turno = turnos.cod_turno " . $INNER_ATENDIDOS . " INNER JOIN planes ON turnos.cod_plan = planes.cod_plan INNER JOIN usuarios ON turnos.dni_usuario = usuarios.dni_usuario WHERE os_" . $tabla->tabla . ".estado IN ('A', 'P', 'C') AND os_" . $tabla->tabla . ".plus != 0 " . $medico . " " . $dia . ") ";
		    		}
		    		else
		    		{
		    			$SQL .= "UNION ALL (SELECT usuario as medico, planes.descripcion as forma_pago, prestaciones.pm, prestaciones.descripcion as prestacion, os_" . $tabla->tabla . ".plus as importe, 'P' as tipo FROM os_" . $tabla->tabla . " INNER JOIN nomenclador ON os_" . $tabla->tabla . ".cod_nomenclador = nomenclador.cod_nomenclador INNER JOIN prestaciones ON nomenclador.cod_prestacion = prestaciones.cod_prestacion INNER JOIN turnos ON os_" . $tabla->tabla . ".cod_turno = turnos.cod_turno " . $INNER_ATENDIDOS . " INNER JOIN planes ON turnos.cod_plan = planes.cod_plan INNER JOIN usuarios ON turnos.dni_usuario = usuarios.dni_usuario WHERE os_" . $tabla->tabla . ".estado IN ('A', 'P', 'C') AND os_" . $tabla->tabla . ".plus != 0 " . $medico . " " . $dia . ") ";
		    		}
		    	}
    			$SQL .= "UNION ALL (SELECT usuario as medico, 'Contado' as forma_pago, prestaciones.pm, prestaciones.descripcion as prestacion, os_contado.importe as importe, 'C' as tipo FROM os_contado INNER JOIN nomenclador ON os_contado.cod_nomenclador = nomenclador.cod_nomenclador INNER JOIN prestaciones ON nomenclador.cod_prestacion = prestaciones.cod_prestacion INNER JOIN turnos ON os_contado.cod_turno = turnos.cod_turno " . $INNER_ATENDIDOS . " INNER JOIN usuarios ON turnos.dni_usuario = usuarios.dni_usuario WHERE os_contado.estado = 'A'" . $medico . " " . $dia . ")";
    			break;    			
    		}
    		CASE 'PAR':
    		{
    			$SQL = "SELECT usuario as medico, 'Contado' as forma_pago, prestaciones.pm, prestaciones.descripcion as prestacion, os_contado.importe, 'C' as tipo FROM os_contado INNER JOIN nomenclador ON os_contado.cod_nomenclador = nomenclador.cod_nomenclador INNER JOIN prestaciones ON nomenclador.cod_prestacion = prestaciones.cod_prestacion INNER JOIN turnos ON os_contado.cod_turno = turnos.cod_turno " . $INNER_ATENDIDOS . " INNER JOIN usuarios ON turnos.dni_usuario = usuarios.dni_usuario WHERE os_contado.estado = 'A'  AND prestaciones.pm = 'N'" . $medico . " " . $dia;
    			break;
    		}
    		CASE 'PARM':
    		{
    			$SQL = "SELECT usuario as medico, 'Contado' as forma_pago, prestaciones.pm, prestaciones.descripcion as prestacion, os_contado.importe, 'C' as tipo FROM os_contado INNER JOIN nomenclador ON os_contado.cod_nomenclador = nomenclador.cod_nomenclador INNER JOIN prestaciones ON nomenclador.cod_prestacion = prestaciones.cod_prestacion INNER JOIN turnos ON os_contado.cod_turno = turnos.cod_turno " . $INNER_ATENDIDOS . " INNER JOIN usuarios ON turnos.dni_usuario = usuarios.dni_usuario WHERE os_contado.estado = 'A' AND prestaciones.pm = 'S' " . $medico . " " . $dia;
    			break;
    		}
    		CASE 'PLUS':
    		{
    			$this->_db->setQuery("SELECT tabla, descripcion FROM obras_sociales");
		    	$this->_db->alter();
		    	if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
		    	$tablas = $this->_db->loadResult();
		    	
		    	FOREACH ($tablas as $tabla)
		    	{
		    		if ($SQL == "")
		    		{
		    			$SQL = "(SELECT usuario as medico, planes.descripcion as forma_pago, prestaciones.pm, prestaciones.descripcion as prestacion, os_" . $tabla->tabla . ".plus as importe, 'P' as tipo FROM os_" . $tabla->tabla . " INNER JOIN nomenclador ON os_" . $tabla->tabla . ".cod_nomenclador = nomenclador.cod_nomenclador INNER JOIN prestaciones ON nomenclador.cod_prestacion = prestaciones.cod_prestacion INNER JOIN turnos ON os_" . $tabla->tabla . ".cod_turno = turnos.cod_turno " . $INNER_ATENDIDOS . " INNER JOIN planes ON turnos.cod_plan = planes.cod_plan INNER JOIN usuarios ON turnos.dni_usuario = usuarios.dni_usuario WHERE os_" . $tabla->tabla . ".estado IN ('A', 'P', 'C') AND os_" . $tabla->tabla . ".plus != 0 " . $medico . " " . $dia . ") ";
		    		}
		    		else
		    		{
		    			$SQL .= "UNION ALL (SELECT usuario as medico, planes.descripcion as forma_pago, prestaciones.pm, prestaciones.descripcion as prestacion, os_" . $tabla->tabla . ".plus as importe, 'P' as tipo FROM os_" . $tabla->tabla . " INNER JOIN nomenclador ON os_" . $tabla->tabla . ".cod_nomenclador = nomenclador.cod_nomenclador INNER JOIN prestaciones ON nomenclador.cod_prestacion = prestaciones.cod_prestacion INNER JOIN turnos ON os_" . $tabla->tabla . ".cod_turno = turnos.cod_turno " . $INNER_ATENDIDOS . " INNER JOIN planes ON turnos.cod_plan = planes.cod_plan INNER JOIN usuarios ON turnos.dni_usuario = usuarios.dni_usuario WHERE os_" . $tabla->tabla . ".estado IN ('A', 'P', 'C') AND os_" . $tabla->tabla . ".plus != 0 " . $medico . " " . $dia . ") ";
		    		}
		    	}
    			break;
    		}
    	}
    	
//    	$error->SetError(JsonRpcError_Unknown, $SQL); 
//    	return $error;
    	
    	$this->_db->setQuery($SQL);
    	$this->_db->alter();
    	if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
    	$regs = $this->_db->loadResult();
    	
    	FOREACH ($regs as $reg)
    	{
    		$row = array();
    		array_push($row, $reg->medico);
    		array_push($row, $reg->forma_pago);
    		array_push($row, $reg->prestacion);
    		array_push($row, round($reg->importe,2));
    		switch($reg->tipo){
    			case "P": $reg->tipo = "PLUS";break;
    			case "C":
    				if($reg->pm == 'S'){ 
    					$reg->tipo = "PARM";
    				}
    				else{
    					$reg->tipo = "PAR";
    				}
    				break;
    		}
    		array_push($row, $reg->tipo);
    		
    		array_push($result, $row);
		}
    	return $result;
    }
}
?>